#include <stdio.h>

#define N 1000
int matrix[N][N];

void rotate(int matrixSize, int matrixColSize);

void reverse(int*arr,int len)
{
    int left = 0;
    int right = len-1;
    while (left < right)
    {
        arr[left]^=arr[right];
        arr[right]^=arr[left];
        arr[left]^=arr[right];

        left++;
        right--;
    }
}

void rotate(int matrixSize, int matrixColSize)
{
    int n = matrixSize;         // 对matrixSize进行

    // 1. 转置
    for (int i = 0; i < n; ++i)
    {
        for (int j = i + 1; j < n; ++j)
        {
            matrix[i][j]^=matrix[j][i];
            matrix[j][i]^=matrix[i][j];
            matrix[i][j]^=matrix[j][i];
        }
    }

    // 2. 每行反转
    for (int i = 0; i < n; ++i)
    {
        reverse(matrix[i],n);
    }
}

int main()
{
    int n;
    scanf("%d", &n);

    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            scanf("%d", &matrix[i][j]);
        }
    }

    rotate(n, n);

    printf("\n");
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }

    return 0;
}